package code.whmmm.util.simple.reflect;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/**
 * <br/> 创建时间: 2020/1/6 13:39
 *
 * @author Zero
 */
public class ReflectUtil {
    /**
     * 根据实例对象，获取 示例对象所有属性
     *
     * @param t
     * @param <T>
     */
    public static <T> Map<String, Field> getFieldsMap(T t) {
        // 如果 fieldsMap 为空，则初始化 map

        Map<String, Field> fieldsMap = new HashMap<String, Field>();

        if (t instanceof Map) {
            return fieldsMap;
        }

        Class<?> clazz = t.getClass();
        //向上循环 遍历父类
        for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
            Field[] field = clazz.getDeclaredFields();
            for (Field f : field) {
                f.setAccessible(true);
                String name = f.getName();
                if (fieldsMap.get(name) == null) {
                    fieldsMap.put(name, f);
                }
            }
        }

        return fieldsMap;

    }


}
